// .txt

beginzonescript;

variables;

short crime_tolerance = 200;
short last_abil;
short i;
short walk_count = 0;

body;

beginstate INIT_STATE;
	sf(55,11,1);
	sf(55,16,0);
	
	if (gf(54,20) > 0)
		sf(54,20,1);
	if (gf(54,21) > 0)
		sf(54,21,1);
	if (gf(54,22) > 0)
		sf(54,22,1);
	if (gf(54,23) > 0)
		sf(54,23,1);
	if (gf(54,24) > 0)
		sf(54,24,1);
	set_obj_act_at_dist(73,1);
	set_obj_act_at_dist(74,1);
	set_obj_act_at_dist(75,1);
	set_obj_act_at_dist(76,1);
	set_obj_act_at_dist(77,1);

	set_obj_act_at_dist(98,1);

//	set_name(,"");

	add_range_to_group(48,55,1);
	set_name(1001,"Crypt Specter");
	set_boss_level(1001,1);
	set_new_abil(50,6);
	set_new_abil(53,6);
	
	//if (get_sdf() > 0) {
		//make_zone_hostile();
		//}

	last_abil = get_current_tick();
	
	set_crime_tolerance(crime_tolerance);
	break;

beginstate EXIT_STATE;

break;

beginstate START_STATE;
	if (gf(54,20) == 1) {
		sf(54,20,2);
		give_object_message(73,100);
		}
	if (gf(54,21) == 1) {
		sf(54,21,2);
		give_object_message(74,100);
		}
	if (gf(54,22) == 1) {
		sf(54,22,2);
		give_object_message(75,100);
		}
	if (gf(54,23) == 1) {
		sf(54,23,2);
		give_object_message(76,100);
		}
	if (gf(54,24) == 1) {
		sf(54,24,2);
		give_object_message(77,100);
		}
		
	if (gf(55,7) > 0)
		set_act_at_dist(ME,0);
		
	// clear zone?
	if ((zone_clear(ME) == FALSE) && (get_flag(55,9) > 0)) {
		clear_zone(ME);	
		}
		
	//if ((get_crime_level() >= crime_tolerance) && (get_sdf(,) == 0)) {
	//	make_zone_hostile();
	//	set_flag(,,1);
	//	}

	// if (gf(,) == 0) {
	//	if (get_ran(1,0,100) < 10)
	//		give_char_text_bubble(,"");
	//	}
	
	if ((gf(55,16) == 0) && (gf(55,9) == 0) && (party_near_nav(6,7))) {
		sf(55,16,1);
		sf(55,11,0);
		
		activate_hidden_group(1);
		add_range_to_group(64,69,2);
		
		// error check. paranoia
		if (char_ok(70) == FALSE) {
			erase_char(1002);
			sf(55,9,1);
			}
			else begin_talk_mode(10);
		}
		
	if (((is_combat()) && (tick_difference(last_abil,get_current_tick()) > 0)) || ((is_group()) && (tick_difference(last_abil,get_current_tick()) > 2))) {
		last_abil = get_current_tick();
		
		walk_count = walk_count + 1;
		if (walk_count == 4) {
			walk_count = 0;
			if (gf(55,12) > 0)
				sf(55,12,0);
				else sf(55,12,1);
			}
		
		if ((gf(55,16) > 0) && (gf(55,16) < 16)) {
			inc_flag(55,16,1);
			if (gf(55,16) == 4)
				begin_talk_mode(11);
			if (char_ok(70)) {
				if (gf(55,16) == 7)
					print_str_color("Travald's shade seems slightly fainter.",3);
				if (gf(55,16) == 11)
					print_str_color("Travald's shade seems much fainter.",3);
				if (gf(55,16) == 14)
					print_str_color("Travald's shade is almost gone.",3);
				}
			if (gf(55,16) == 16) {
				erase_char(1002);
				sf(55,18,1);
				sf(55,19,1);
				sf(55,20,1);
				begin_talk_mode(12);
				}
			}
			
		if ((gf(55,14) > 0) && (char_ok(24))) {
			set_attitude(24,10);
			damage_char(24,1500 + get_ran(1,0,2000),0);
			}
		if ((gf(55,15) > 1) && (char_ok(47))) {
			set_attitude(47,10);
			damage_char(47,1500 + get_ran(1,0,2000),1);
			}
		if ((gf(55,16) >= 16) && (char_ok(70))) {
			set_attitude(70,10);
			damage_char(70,1500 + get_ran(1,0,2000),0);
			}
		}
break;

//beginstate 10;
//break;

//	print_str("");
//	set_terrain_string_range(".",3);
//	set_terrain_string_range("The sign says - .",3);
